package com.neu.entity;

import com.alibaba.excel.annotation.ExcelIgnore;
import com.alibaba.excel.annotation.ExcelProperty;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.neu.base.BaseEntity;
import com.neu.utils.excel.EasyExcelConvert;
import com.neu.utils.excel.EnumFiledConvert;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;

import java.time.LocalDateTime;
import java.util.List;

@EqualsAndHashCode(callSuper = true)
@Schema(description = "任务实体")
@Data
@AllArgsConstructor
@NoArgsConstructor
@TableName("task")
public class Task extends BaseEntity {
    /**
     * 任务ID
     */
    @TableId(type= IdType.ASSIGN_ID)
    @ExcelProperty(value = "任务ID")
    private String taskId;
    /**
     * 项目ID
     */
    @ExcelProperty(value = "项目ID")
    private String projectId;
    /**
     * 前置任务ID
     */
    @ExcelProperty(value = "前置任务ID")
    private String preTask;

    /**
     * 任务负责人id
     */
    @ExcelProperty(value = "任务负责人id")
    private String assignedTo;
    /**
     * 任务名称
     */
    @ExcelProperty(value = "任务名称")
    private String taskName;
    /**
     * 任务描述
     */
    @ExcelProperty(value = "任务描述")
    private String description;
    /**
     * 任务类型 1 功能点分析   2 造价综合评估 3报告审核
     */
    @ExcelProperty(value = "任务类型",converter = EasyExcelConvert.class)
    @EnumFiledConvert(enumMap = "1|功能点分析,2|造价综合评估,3|报告审核")
    private String taskType;
    /**
     * 任务状态 0 未开始  1 进行中  2 已完成
     */
    @ExcelProperty(value = "任务状态",converter = EasyExcelConvert.class)
    @EnumFiledConvert(enumMap = "0|未开始,1|进行中,2|已完成")
    private String taskStatus;
    /**
     * 任务进度 0-100 之间
     */
    @ExcelProperty(value = "任务进度")
    private Integer progress;
    /**
     * 任务优先级 0 低  1 中  2 高
     */
    @ExcelProperty(value = "任务优先级",converter = EasyExcelConvert.class)
    @EnumFiledConvert(enumMap = "0|低,1|中,2|高")
    private String priority;
    /**
     * 任务截止日期
     */
    @ExcelProperty(value = "任务截止日期")
    private LocalDateTime dueDate;

    /**
     * 任务参与者
     */
    @TableField(exist = false)//不在数据库中
    @ExcelIgnore
    private List<User> userList;

    /**
     * 前置任务详情
     */
    @TableField(exist = false)//不在数据库中
    @ExcelIgnore
    private Task preTaskDetail;

}
